#!/usr/bin/python
# -*- coding:utf-8 -*-
# @author  : micah
# @time    :  
# @function: 
# @version :

# 当前声明不定长参数的格式
def test(a, b, *args, **kwargs):
    # 不定长参数, *args, **kwargs
    print(f'{a},{type(a)}')
    print(f'{b},{type(b)}')
    # 如果形式参数已经接收到值之后还多出来一些其他的普通参数，则会被*args '全部'接收，并且类型为一个元组
    print(f'{args},{type(args)}')
    print(f'{kwargs},{type(kwargs)}')    # 默认参数的传递方式会被 **kwargs 接收，并且类型为一个字典


test(1, 2, 3, 4, 5, 6, name='micah', age=18)

"""
*args 接收多出来的普通参数
**kwargs 接收多出来的命名参数

在使用*args和**kwargs时，*args要放前面，**kwargs要放后面，不定长参数位置在所有参数的后面。
形式参数 > 默认参数 > args > kwargs
"""
   